package com.leetcode;

import java.util.Arrays;

/**
 * 1187. 使数组严格递增
 *
 * @author yml
 * 给你两个整数数组arr1 和 arr2，返回使arr1严格递增所需要的最小「操作」数（可能为 0）。
 * <p>
 * 每一步「操作」中，你可以分别从 arr1 和 arr2 中各选出一个索引，分别为i 和j，0 <=i < arr1.length和0 <= j < arr2.length，然后进行赋值运算arr1[i] = arr2[j]。
 * <p>
 * 如果无法让arr1严格递增，请返回-1。
 */
public class LeetCode1187No {

    public static void main(String[] arg0) {
        int[] arr1 = {1, 5, 3, 6, 7};
        int[] arr2 = {1, 3, 2, 4, 1, 3, 2, 4, 1, 3, 2, 4, 1, 3, 2, 4, 1, 3, 2, 4};
        System.out.println("实现严格递增的次数 = " + makeArrayIncreasing(arr1, arr2));
    }


    // arr2进行排序，对于已经用过的数不再使用
    public static int makeArrayIncreasing(int[] arr1, int[] arr2) {
        int length = arr1.length;
        if (length < 2) {
            return 0;
        }

        // 对数组2排序去重
        arr2 = Arrays.stream(arr2).sorted().distinct().toArray();
        int arr2Max = arr2[arr2.length - 1];
        int res = 0;
        int arrayIndex = 0; // 记录数组2的数字从哪里开始循环查找

        // 动态规划
        int[] dp = new int[length + 1];
        dp[0] = 0;
        for (int i = 1; i < arr1.length; i++) {
            if (arr1[i] - arr1[i - 1] < 0) { // 碰到需要置换的情况
                for (int j = 0; j < i; j++) {

                }
            } else {
                dp[i] = dp[i - 1];
            }
        }
        return res;
    }

}
